package com.ruoyi.business.domain.product;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 订单表实体类
 * 对应数据库表：tb_order
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("tb_order")
@ApiModel(value = "TbOrder", description = "订单表实体类")
public class TbOrder extends BaseEntity {

    /**
     * 订单ID
     */
    @ApiModelProperty(value = "订单ID")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 订单编号（唯一：ORD+日期+随机数）
     */
    @ApiModelProperty(value = "订单编号（唯一：ORD+日期+随机数）")
    private String orderNo;

    /**
     * 用户ID
     */
    @ApiModelProperty(value = "用户ID")
    private Long userId;

    /**
     * 订单来源：1-普通商城（纯金额），2-积分商城（纯积分/积分+金额）
     */
    @ApiModelProperty(value = "订单来源：1-普通商城（纯金额），2-积分商城（纯积分/积分+金额）")
    private Integer orderSource;

    /**
     * 订单类型（仅积分商城用）：1-纯积分，2-积分+金额；普通商城固定为0
     */
    @ApiModelProperty(value = "订单类型（仅积分商城用）：1-纯积分，2-积分+金额；普通商城固定为0")
    private Integer orderType;

    /**
     * 总扣减积分（仅积分商城订单非0）
     */
    @ApiModelProperty(value = "总扣减积分（仅积分商城订单非0）")
    private Long totalPoints;

    /**
     * 总支付金额（积分商城订单=固定金额数量，普通商城=商品售价数量）
     */
    @ApiModelProperty(value = "总支付金额（积分商城订单=固定金额数量，普通商城=商品售价数量）")
    private BigDecimal totalCash;

    /**
     * 运费（积分商城与普通商城共用）
     */
    @ApiModelProperty(value = "运费（积分商城与普通商城共用）")
    private BigDecimal freight;

    /**
     * 订单状态：1-待支付，2-已支付，3-已发货，4-已完成，5-已取消，6-已退款 7审批中（积分商城） 8审批成功（积分商城）
     */
    @ApiModelProperty(value = "订单状态：1-待支付，2-已支付，3-已发货，4-已完成，5-已取消，6-已退款 7审批中（积分商城） 8审批成功（积分商城）")
    private Integer orderStatus;

    /**
     * 支付方式：1-微信，2-支付宝；纯积分订单固定为3
     */
    @ApiModelProperty(value = "支付方式：1-微信，2-支付宝；纯积分订单固定为3")
    private Integer payType;

    /**
     * 支付时间（含积分扣减完成时间）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "支付时间（含积分扣减完成时间）")
    private Date payTime;

    /**
     * 取消时间（仅status=5）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "取消时间（仅status=5）")
    private Date cancelTime;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建时间", readOnly = true)
    private Date createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty(value = "更新时间", readOnly = true)
    private Date updateTime;

    /**
     * erp订单号
     */
    @ApiModelProperty(value = "erp订单号")
    private String erporderNo;

    /**
     * 创建人
     */
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建人", readOnly = true)
    private String createBy;

    /**
     * 更新人
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ApiModelProperty(value = "更新人", readOnly = true)
    private String updateBy;

    /**
     * 地址id
     */
    @ApiModelProperty(value = "地址id")
    private Long addressId;

    @ApiModelProperty(value = "商品状态（0-未删除，1-已删除）",
        example = "0",
        allowableValues = "0,1",
        notes = "0-未删除；1-已删除",
        position = 25)
    private Integer isDelete;


}
